class DataEventBus {
    constructor() {
        // 存储所有事件对应的回调的对应关系
        /**
         * key : [ callback, callback ]
         */
 
        this.items = {};
    }
 
    // 监听
    $on(eventName, callback) {
        if (!this.items[eventName]) {
            //一个事件可能有多个监听者
            this.items[eventName] = [];
        }
        this.items[eventName].push(callback)
 
        // 简化版写法 等同于上面
        // (this.items[eventName] ||= []).push(callback)
    }
 
 
    // 触发监听
    $emit(eventName, ...args) {
        if (!this.items[eventName]) return;
        this.items[eventName].forEach(ca => ca(...args))
    }
 
 
    // 去掉监听
    $off(eventName) {
        this.items[eventName] = []
    }
}
 
export default new DataEventBus();